As an increasing number of applications and services are being made available over networks such as the Internet, an increasing number of content, application, and/or service providers are turning to technologies such as cloud computing. Cloud computing, in general, is an approach to providing access to electronic resources through services, such as Web services, where the hardware and/or software used to support those services is dynamically scalable to meet the needs of the services at any given time. A user or customer typically will rent, lease, or otherwise pay for access to resources through the cloud, and thus does not have to purchase and maintain the hardware and/or software needed for such resources.
In some cases, users may want special hardware or full access to specific resources. Such access comes with risks for providers of those resources, however, as in a cloud or other shared environment there typically will be other users sharing those resources at various times, and a modification of the resource by one user can potentially be detrimental to subsequent users. In order to ensure that one user does not alter the hardware, software, or configuration information in an inappropriate way that will affect other users, such as by altering firmware to inject malicious code, it can be necessary to re-image the resource after each user. Such an approach might be acceptable in situations where users have dedicated access to a resource for an extended period of time, but in a cloud or similar environment where the user of a resource could change several times over a short period of time, such an approach can be too expensive and resource intensive. Further, in order to determine whether the firmware has been altered, it can be necessary to validate the firmware before provisioning a new user, which can be a time intensive process that consumes resources that could be dedicated to other tasks.